import java.util.*;
public class Practice2{
    /*
    链接 https://ac.nowcoder.com/acm/problem/230720
    回文子串动态规划解法, 然后再判断, 遍历两遍
    可以优化在找到2的时候直接break

     */
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        char[] ss = in.next().toCharArray();
        int n = ss.length;
        //由于是从i, j 的位置的字符串全部比较一遍, 并不需要考虑越界和初始化, 两种特判已经考虑到了
        boolean[][] dp = new boolean[n][n];
        for(int i = n - 1;i >= 0;i--){
            for(int j = i;j < n;j++){
                if(ss[i] == ss[j]){
                    dp[i][j] = i + 1 < j ? dp[i + 1][j - 1] : true;
                }
            }
        }
        //设置这个值, 防止遇到小值被修改
        int min = 101;
        for(int i = n - 1;i >= 0;i--){
            for(int j = i;j < n;j++){
                //规定长度必须大于1
                if(j > i && dp[i][j]){
                    min = Math.min(min,j - i + 1);
                    if(min == 2){
                        break;
                    }
                }
            }
        }
        System.out.println(min == 101 ? -1 : min);
    }
}